#ifndef REGISTERDIALOG_H
#define REGISTERDIALOG_H

#include <QWidget>
#include <QMessageBox>
#include <QKeyEvent>
#include "databasemanager.h"

namespace Ui {
class RegisterDialog;
}

class RegisterDialog : public QWidget
{
    Q_OBJECT

public:
    explicit RegisterDialog(QWidget *parent = nullptr);
    ~RegisterDialog();

protected:
    // 键盘事件处理
    void keyPressEvent(QKeyEvent *event) override;

private slots:
    // 注册按钮点击事件
    void on_registerButton_clicked();
    
    // 取消按钮点击事件
    void on_cancelButton_clicked();
    
    // 用户名输入框回车事件
    void on_usernameEdit_returnPressed();
    
    // 密码输入框回车事件
    void on_passwordEdit_returnPressed();
    
    // 确认密码输入框回车事件
    void on_confirmPasswordEdit_returnPressed();

private:
    Ui::RegisterDialog *ui;
    DatabaseManager *m_dbManager;
    
    // 验证注册信息
    bool validateRegistration(const QString &username, const QString &password, const QString &confirmPassword);
    
    // 验证用户名格式
    bool validateUsername(const QString &username);
    
    // 验证密码格式
    bool validatePassword(const QString &password);
    
    // 显示错误信息
    void showError(const QString &message);
    
    // 显示成功信息
    void showSuccess(const QString &message);
    
    // 清空输入框
    void clearInputs();
    
    // 创建新用户
    bool createUser(const QString &username, const QString &password);

signals:
    // 注册成功信号：用于通知登录窗口恢复显示
    void registrationSucceeded();
};

#endif // REGISTERDIALOG_H
